hive如何建表、并导入数据,导入的csv文件中数据带有逗号的解决方法

您所在的位置:网站首页 oracle 导出csv 字段内容有逗号 hive如何建表、并导入数据,导入的csv文件中数据带有逗号的解决方法

hive如何建表、并导入数据,导入的csv文件中数据带有逗号的解决方法

2024-06-29 06:12| 来源: 网络整理| 查看: 265

建表 hive中建表一般分为两种情况 1、普通内部表 建表语句:create  table tablename(name string,num int);

创建内部表的时候,内部表直接存储在默认的hdfs路径,不带有数据;删除内部表的时候,内部表会将数据和元数据全部删除。

2、外部表 建表语句:create external table tablename(name string,num int)          row format delimited          fields terminated by ','          location '/test';

比在创建内部表的时候增加一个关键字:external 同时还有有数据分割语句 row format delimited fileds terminated by ',' 最后再写上外部表的建表路径 location ‘xxxx’

创建外部表的时候,需要自己指定路径,同时在删除表时,只删除元数据,数据并不删除

导入数据 可以通过2种方式将数据导入到hive中 1、从本地文件系统中导入数据到hive表 基本语句: load data local inpath '/usr/local/data/demo1.txt' overwrite into table tablename;

从本地文件系统中将数据导入到Hive表的过程中,其实是先将数据临时复制到HDFS的一个目录下,然后再将数据从那个临时目录下移动(注意是移动!!不是复制)到对应的Hive表的数据目录里面。既然如此,那么Hive肯定支持将数据直接从HDFS上的一个目录移动到相应Hive表的数据目录下,

2、从HDFS上导入数据到Hive表 基本语法: load data inpath '/user/root/data/demo2.txt' overwrite into table tablename; 使用OpenCSVSerde

相信大家在使用hive进行数据存储分析过程中,会经常碰到需要上传CSV文件格式的数据。由于CSV文件在hive中是自动按 " , " 进行分割的,而我们经常会发现数据中就已经带有 " , " 这就会导致我们将数据导入到hive中已经创建好的表时,出现一个数据占据好几个字段,出现数据混乱的问题。 为了解决这个问题,hive为我们提供了用于专门处理CSV的OpenCSVSerde

OpenCSVSerde具有一下字符串数据特性:

使用双引号 (") 作为默认引号字符,还允许您指定分隔符、引号和转义符\t 或 \n 无法直接转义。要对它们进行转义,请使用 "escapeChar" = "\\"不支持 CSV 文件中的嵌入换行符

以下是具体使用示例:

hive> create external table ods_job_message( > crawl_datetime timestamp, > url string, > company_name string, > company_size string, > company_type string, > job_type string, > job_name string, > edu string, > ) > row format serde 'org.apache.hadoop.hive.serde2.OpenCSVSerde' > with serdeproperties > ( > 'separatorChar' = ',', > 'quoteChar' = '\"', > 'escapeChar' = '\\' > ) > location '/data';

OpenCSVSerde中默认的分隔符separatorChar、quote、escape分别为\, " 和 ‘  这就可以完美解决在读写CSV文件中遇到数据中带有 ","的问题。

这些数据虽然都带有, 但全都在同一个字段下。

tips:导入CSV文件时跳过第一行 在创建表的语句后加上: tblproperties("skip.header.line.count"="1") --就可以完美跳过文件行首行

 



【本文地址】


今日新闻


推荐新闻


    CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3